package h0722;

import java.util.Arrays;
import java.util.Scanner;

/**
  * @description 求最多可以派出多少支团队
  * @author 不知名帅哥
  * @date 2024/7/22 22:27
  * @version 1.0
*/
public class HowManyTeams {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int n = sc.nextInt();
        int[] arr = new int[n];
        for (int i = 0; i < n; i++) {
            arr[i]=sc.nextInt();
        }
        int limit = sc.nextInt(); //队伍能力最小值
        sc.close();

        int res=getResult(arr,limit);
        System.out.println(res);
    }

    private static int getResult(int[] arr, int limit) {
        int ans=0; //存储结果
        Arrays.sort(arr); //排序
        int n = arr.length;
        int last=0;
        for (int i = n-1; i >=0;i--) {
            if (arr[i]>=limit){
                ans++;
            }else {
                last=i;
                break; //如果不满足就直接退出
            }
        }

        int left=0;
        while (left<last){
            if (arr[left]+arr[last]>=limit){
                ans++;
                last--; //last--;left++;同时向中间逼近。
            }else {
               ; //left++ 剔除掉能力低的人。
            }
            left++;  //这里是合并两个left++;
        }
        return ans;
    }
}
